class Generic<T> {

    /**
     * 将Object数组变成了T数组，即指定了Object的类型
     * 那我为什么不直接用String呢？
     *
     * new前面加上一个T[]的强制类型转换
     * 实例化的依旧是Object对象
     */
//    Object[] arr = new Object[10];
    T[] arr = (T[]) new Object();


    public Object getObj (int i) {
        return this.arr[i];
    }

    public void setObj (int i, T t) {
       this.arr[i] = t;
    }
}

public class Test {
    public static void main(String[] args) {
//        Generic generic = new Generic();
//        generic.setObj(0,"Matty");
//        generic.setObj(1,10);
//        String name = (String) generic.getObj(0);
//        System.out.println(name);

        Generic<String> generic = new Generic<String>();
        generic.setObj(0,"matty");
//        generic.setObj(1,2);
        //因为有了指定类型String所以传整型会报错

    }
}